Going back to an earlier point in a conversation, either by rewinding the session or forking a parallel one. Entry is a long press on a user message — no new navigation, no new tab. The whole design turns on one fact the confirm sheet must land in under two seconds: the transcript rewinds, the files do not.
The warning strip is fixed in the sheet, in bad tone, above the buttons — not a footnote and not dismissible. It names the one thing rewinding does not do and points at the surface that knows: the Git tab.
The cost is counted before it is paid: four turns, eleven tool calls, set as a stat row you read at a glance. The sheet has one destructive filled button and a quiet Cancel, never two equal choices.
One explainer row states which it is, in words, in both the sheet and the list. Rewound originals are tucked into a collapsed group and stay recoverable; forks are ordinary sessions with a lineage caption.
Message rows, tool bands, the two-layer composer and the session list row are unchanged from Chat Master v2 and A Master Core v1. New here: the lifted message, the menu, the sheet, the lineage banner, one collapsed group.
Copy stays where it has always been, first and captionless. The two new items each carry one line of what they do, because rewind and fork are not words a user should have to guess at. Turn number is printed on the lifted message so the anchor is unambiguous.
Only the two new items grey out — copying a message while the agent works is still fine. The reason is written once, at the foot of the menu, next to the running mark, and the composer already shows Stop, so the fix is visible on the same screen.
If the transcript moved under the sheet, the action fails closed: the menu and sheet dismiss, nothing is dropped, and the toast says what happened and what to do. Bad-tone hairline, no icon-only alarm, and it does not block the composer.
The lifted message stays on screen above the sheet, so the sheet never asks about an anchor you can no longer see. Cancel is a hairline at two fifths the width of the filled action — reachable, obviously secondary.
Three strings change: title, explainer, button. Everything else is identical, including the file warning — a fork does not roll files back either, and pretending otherwise would be the one mistake worth avoiding here.
Warning, verbatim in both variants: Files are NOT rolled back — only the conversation rewinds. Check the Git tab for file state.
Explainer, rewind: The current session will be tucked away (recoverable). Fork: The current session stays untouched.
The counts are a dry run supplied by the caller. If the daemon cannot count them, the sheet does not guess and does not show the card — it shows nothing in that slot rather than a zero.
There is no third route in this sheet. Recovering a rewound original happens in the session list, where the tucked-away sessions actually live.
The lineage banner replaces the context row rather than stacking on top of it, so the header does not grow a second line of chrome. The original title is the tap target back. The composer holds the old wording as a selection: one keystroke replaces it, or you edit in place.
Identical mechanics, one word different in the banner: Fork of rather than Rewound from. The transcript above the anchor is shared history and reads exactly as it did in the parent.
Titles. The frames assume the new session takes a derived title (Replay ordering, take 2) so the list can tell the two apart without reading captions. Inheriting the parent title verbatim is the other option, and it makes the list ambiguous. Worth a decision before build.
The banner is not dismissible in these frames. If it should be, it needs a rule for where lineage goes afterwards — Session info is the obvious home.
The disclosure row sits below Recent and states the count, so nothing has silently disappeared. It is a muted row on the standard hairline, not a card, and it does not compete with New session.
Tucked-away originals keep the list row, dropped one step in weight and colour: hollow mark, quieter title, no body or meta line, and a caption naming where the conversation continued. The chevron opens the original read-only; recovery is its own decision inside it.
No count badge, no duration, no branch health — the list prints only facts the daemon already supplies to it today. The group header is the only new string on this screen.